
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[otvaranjePocStanja]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[otvaranjePocStanja]
GO


SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

CREATE PROCEDURE dbo.[otvaranjePocStanja]
	@SIFRA_PREDUZECA varchar(12),
	@POSLOVNA_GODINA numeric(4),
	@DATUM_POCETKA_POSLOVNE_GODINE datetime,
	@DATUM_KRAJA_POSLOVNE_GODINE datetime,
	@OK BIT OUTPUT
AS
SET NOCOUNT ON

SET @OK=0

--kreiranje nove poslovne godine	
DECLARE @NOVA_POSLOVNA_GODINA numeric(4),
	@VR_UKUPNA money,
	@KOL_UKUPNA numeric(12,2),
	@SIFRA_SEKTORA varchar(12),
	@SIFRA_MAGACINA varchar(12),
	@SIFRA_GRUPE varchar(12),
	@SIFRA_ARTIKLA numeric(12),
	@temp_poslovna_godina numeric(4),
	@BROJ_TRANSAKCIJA numeric(5)
	

IF @SIFRA_PREDUZECA=NULL 
BEGIN
	raiserror('Odaberite stavku iz tabele.',11,2)
	return
END
ELSE
BEGIN
	SET @temp_poslovna_godina=@POSLOVNA_GODINA
	SET @NOVA_POSLOVNA_GODINA=@POSLOVNA_GODINA
END
	
SET @BROJ_TRANSAKCIJA = @@TRANCOUNT

IF @BROJ_TRANSAKCIJA = 0
BEGIN TRANSACTION	

UPDATE POSLOVNA_GODINA
SET DATUM_KRAJA_POSLOVNE_GODINE=DATEADD(minute,-1,GETDATE())
WHERE POSLOVNA_GODINA=@temp_poslovna_godina
IF @@ERROR <> 0
BEGIN
  RAISERROR('Greska pri zatvaranju stare poslovne godine',11,2)
  IF @BROJ_TRANSAKCIJA = 0 ROLLBACK TRANSACTION
  RETURN
END

SET @NOVA_POSLOVNA_GODINA=@NOVA_POSLOVNA_GODINA + 1
INSERT INTO POSLOVNA_GODINA 
 ( SIFRA_PREDUZECA, POSLOVNA_GODINA, DATUM_POCETKA_POSLOVNE_GODINE, DATUM_KRAJA_POSLOVNE_GODINE)
VALUES
 (@SIFRA_PREDUZECA,@NOVA_POSLOVNA_GODINA,GETDATE(),DATEADD(year,1,GETDATE()))
IF @@ERROR <> 0
BEGIN
  RAISERROR('Greska pri dodavanju nove poslovne godine',11,2)
  IF @BROJ_TRANSAKCIJA = 0 ROLLBACK TRANSACTION
  RETURN
END

--selektuje samo magacinske kartice koje imaju nesto u sebi
DECLARE crMAGACINSKA_KARTICA CURSOR FOR
SELECT SIFRA_SEKTORA, SIFRA_MAGACINA, SIFRA_GRUPE, SIFRA_ARTIKLA, VR_UKUPNA, KOL_UKUPNA
FROM MAGACINSKA_KARTICA
WHERE
	KOL_UKUPNA>0

OPEN crMAGACINSKA_KARTICA

FETCH NEXT FROM crMAGACINSKA_KARTICA INTO @SIFRA_SEKTORA, @SIFRA_MAGACINA, @SIFRA_GRUPE, @SIFRA_ARTIKLA, @VR_UKUPNA, @KOL_UKUPNA
WHILE @@FETCH_STATUS=0
BEGIN
	UPDATE MAGACINSKA_KARTICA
	SET
		VR_POCETNA=@VR_UKUPNA,
		KOL_POCETNA=@KOL_UKUPNA,
		VR_IZLAZA=0,
		VR_ULAZA=0,
		KOL_IZLAZA=0,
		KOL_ULAZA=0,
		POSLOVNA_GODINA=@NOVA_POSLOVNA_GODINA
	WHERE
	SIFRA_PREDUZECA = @SIFRA_PREDUZECA AND
	SIFRA_SEKTORA = @SIFRA_SEKTORA AND
	SIFRA_MAGACINA = @SIFRA_MAGACINA AND
	SIFRA_GRUPE = @SIFRA_GRUPE AND
	SIFRA_ARTIKLA = @SIFRA_ARTIKLA AND
	POSLOVNA_GODINA = @POSLOVNA_GODINA
	IF @@ERROR <> 0
	BEGIN
	  RAISERROR('Greska pri azuriranju magacinske kartice',11,2)
	  IF @BROJ_TRANSAKCIJA = 0 ROLLBACK TRANSACTION
	  CLOSE crMAGACINSKA_KARTICA
	  DEALLOCATE crMAGACINSKA_KARTICA
	  RETURN
	END

	FETCH NEXT FROM crMAGACINSKA_KARTICA INTO @SIFRA_SEKTORA, @SIFRA_MAGACINA, @SIFRA_GRUPE, @SIFRA_ARTIKLA, @VR_UKUPNA, @KOL_UKUPNA
END

CLOSE crMAGACINSKA_KARTICA
DEALLOCATE crMAGACINSKA_KARTICA

IF @BROJ_TRANSAKCIJA = 0 COMMIT TRANSACTION
SET @OK = 1

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
	